importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.StringUtils.js
//@include lib_sol.common.SordUtils.js
//@include lib_sol.common.RepoUtils.js
//@include lib_sol.common.UserUtils.js
//@include lib_sol.common.Map.js
//@include lib_sol.common.Config.js
//@include lib_sol.common.WfUtils.js
//@include lib_sol.common.Roles.js
//@include lib_sol.common.ix.FunctionBase.js
//@include lib_sol.common.ix.DynAdHocFlowUtils.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.UserRolesToMap" }); // eslint-disable-line one-var
/**
* Analyze the user roles config and writes the user list to a map field
*
* @author MW, ELO Digital Office GmbH
* @version 1.03.000
*
* @requires sol.common.Config
* @requires sol.common.Roles
* @requires sol.common.WfUtils
* @requires sol.common.ix.FunctionBase
*
*/
sol.define("sol.common.ix.functions.UserRolesToMap", {
extend: "sol.common.ix.FunctionBase",
/**
* @cfg {String} objId
* Object ID
*/
/**
* @cfg {de.elo.ix.client.WFDiagram} wfDiagram
* Workflow diagram
*/
/**
* @cfg {String} userRolesConfigObjId
* Repository path of the user roles configuration
*/
/**
* @cfg {String|Object} role
* Role name. If this is defined as an object, a `type` and a `key` has to be defined to load the role from the sords metadata (see {@link sol.common.SordUtils#getValue}).
*/
/**
* @cfg {String} defaultRole (optional)
* If `role` is defined as an object with a `type` and a `key` property, but there is no role definition for the read value, this will be used.
*/
/**
* @cfg {String} userNamekey (optional)
* Workflow map key name of the user name
*/
/**
* @cfg {String} userNamekey (optional)
* Workflow map key name of the user ID
*/
/**
* @cfg {String} mandatoryKey (optional)
* Workflow map key name of the "mandatory" flag
*/
/**
* @cfg {Boolean} [mandatory=true] (optional)
* Users should be mandatory
*/
initialize: function (config) {
var me = this;
me.params = config;
me.$super("sol.common.ix.FunctionBase", "initialize", [config]);
},
process: function () {
var me = this,
conn, userEntries;
conn = (typeof ixConnectAdmin !== "undefined") ? ixConnectAdmin : ixConnect;
if (me.objId && !me.wfDiagram) {
me.wfDiagram = sol.common.WfUtils.getLastActiveWorkflow(me.objId);
}
if (!me.wfDiagram) {
throw "The workflow diagram is empty";
}
if (!me.userRolesConfigObjId) {
throw "The object ID for the user roles configuration is empty";
}
if (!me.role) {
throw "The role name is empty";
}
me.rolesConfig = sol.create("sol.common.Config", { compose: me.userRolesConfigObjId }).config;
if (!me.rolesConfig.roles) {
throw "In the workflow user roles configuration are no roles defined";
}
me.objId = me.wfDiagram.objId;
me.sord = conn.ix().checkoutSord(me.objId, SordC.mbAllIndex, LockC.NO);
if (me.role.type && me.role.key && !sol.common.Roles.retrieveRole(me.role, me.rolesConfig.roles, me.sord) && me.defaultRole) { // 'defaultRole' just used if role should be read from sord
me.role = me.defaultRole;
}
if (!sol.common.Roles.retrieveRole(me.role, me.rolesConfig.roles, me.sord)) {
throw "Role '" + me.role + "' is not defined in the configuration";
}
userEntries = sol.common.Roles.getUsers2(me.role, me.sord, me.rolesConfig.roles);
sol.common.ix.DynAdHocFlowUtils.clearCurrentUser(me.wfDiagram.id, me.objId, me.params);
sol.common.ix.DynAdHocFlowUtils.createDynAdHocFlow(me.wfDiagram.id, me.objId, userEntries, me.params);
}
});
/**
* @member sol.common.ix.functions.UserRolesToMap
* @static
* @inheritdoc sol.common.ix.FunctionBase#onEnterNode
*/
function onEnterNode(clInfo, userId, wfDiagram, nodeId) {
var params, module;
logger.enter("onEnterNode_UserRolesToMap", { flowId: wfDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wfDiagram, nodeId);
params.wfDiagram = wfDiagram;
sol.common.WfUtils.checkMainAdminWf(wfDiagram);
module = sol.create("sol.common.ix.functions.UserRolesToMap", params);
module.process();
logger.exit("onEnterNode_UserRolesToMap");
}
/**
* @member sol.common.ix.functions.UserRolesToMap
* @static
* @inheritdoc sol.common.ix.FunctionBase#onExitNode
*/
function onExitNode(clInfo, userId, wfDiagram, nodeId) {
var params, module;
logger.enter("onExitNode_UserRolesToMap", { flowId: wfDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wfDiagram, nodeId);
params.wfDiagram = wfDiagram;
sol.common.WfUtils.checkMainAdminWf(wfDiagram);
module = sol.create("sol.common.ix.functions.UserRolesToMap", params);
module.process();
logger.exit("onExitNode_UserRolesToMap");
}
/**
* @member sol.common.ix.functions.UserRolesToMap
* @method RF_sol_common_function_UserRoleToMap
* @static
* @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
*/
function RF_sol_common_function_UserRoleToMap(iXSEContext, args) {
var params, module;
logger.enter("RF_sol_common_function_UserRoleToMap", args);
params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "objId", "userRolesConfigObjId", "role");
sol.common.ix.RfUtils.checkMainAdminRights(iXSEContext.user, params);
module = sol.create("sol.common.ix.functions.UserRolesToMap", params);
module.process();
logger.exit("RF_sol_common_function_UserRoleToMap");
}